package controlador;
import vista.*;
import negModel.*;


public class ControladorDeVentanas {
	private VistaMenuPrincipal vistaMenuPrincipal;
	private VistaCrearUsuario vistaCrearUsuario;
	private VistaTaller vistaTaller;
	private VistaComercio vistaComercio;
	private VistaPistaOponente vistaPistaOponente;
	private VistaCambiarPartes vistaCambiarPartes;
	private VistaSeleccionarJugador vistaSeleccionarJugador;
	private VistaEstadoPartes vistaEstadoPartes;
	private ControladorVistaMenuPrincipal controladorMenuPrincipal=new ControladorVistaMenuPrincipal(this);
	private ControladorVistaCrearUsuario controladorCrearUsuario=new ControladorVistaCrearUsuario(this);
	private ControladorVistaTaller controladorTaller=new ControladorVistaTaller(this);
	private ControladorVistaComercio controladorComercio=new ControladorVistaComercio(this);
	private ControladorVistaPistaOponente controladorPistaOponente=new ControladorVistaPistaOponente(this);
	private ControladorCambiarPartes controladorCambiarPartes=new ControladorCambiarPartes (this);
	private ControladorVistaSeleccionarJugador controladorVistaSeleccionarJugador=new ControladorVistaSeleccionarJugador (this);
	private ControladorEstadoPartes controladorEstadoPartes=new ControladorEstadoPartes(this);
	private PersonajeJugador jugador;
	
	public ControladorDeVentanas(){
		vistaMenuPrincipal=new VistaMenuPrincipal(controladorMenuPrincipal);
		vistaCrearUsuario=new VistaCrearUsuario(controladorCrearUsuario);
		vistaTaller=new VistaTaller(controladorTaller);
		vistaComercio=new VistaComercio(controladorComercio);
		vistaPistaOponente=new VistaPistaOponente(controladorPistaOponente);
		vistaCambiarPartes=new VistaCambiarPartes (controladorCambiarPartes);
		vistaSeleccionarJugador= new VistaSeleccionarJugador(controladorVistaSeleccionarJugador);
		vistaEstadoPartes=new VistaEstadoPartes(controladorEstadoPartes);
		this.OcultarVentanaCrearUsuario();
		this.OcultarVentanaTaller();
		this.OcultarVentanaComercio();
		this.OcultarVentanaPistaOponente();
		this.OcultarVentanaCambiarPartes();
		this.OcultarVentanaSeleccionarJugador();
		this.OcultarVentanaEstadoPartes();
		this.jugador = null;
		
	}
	
	
	
	

	public void ActualizarVistaTallerAutos (){
		vistaTaller.llenarListaDeAutos(controladorTaller.CargarModeloAuto());
	}
	
	public void ActualizarVistaSeleccionarJugador (){
		vistaSeleccionarJugador.llenarListaJugadores(controladorVistaSeleccionarJugador.CargarModeloJugadores());
	}
	
	public void ActualizarVistaTallerPartes (){
		vistaTaller.llenarListaPartes(controladorTaller.CargarModeloPartes());
	}
	
	public void ActualizarVistaComercioPartesComprar(){
		vistaComercio.llenarListaPartesComprar(controladorComercio.CargarModeloPartes());
	}
	
	public void ActualizarDinero (){
		vistaTaller.SetEtiquetaDinero(this.ObtenerJugador().getDinero());
		vistaComercio.SetEtiquetaDinero(this.ObtenerJugador().getDinero());
	}
	
	public void ActualizarListasPistaOponentes(){
		vistaPistaOponente.llenarListas(controladorPistaOponente.CargarModeloPista(),controladorPistaOponente.CargarModeloOponentes());
	}
	
	public void ActualizarListaPartesNuevas(){
		vistaCambiarPartes.llenarListaPartesNuevas(controladorCambiarPartes.CargarModeloPartesNuevas());
	}
	
	public void ActualizarListaPartesUsadas(){
		vistaCambiarPartes.llenarListaPartesUsadas(controladorCambiarPartes.CargarModeloPartesUsadas());
	}
	
	public void ActualizarApuesta(double valor){
		vistaPistaOponente.SetApuesta (Double.toString(valor));
	}
	
	public void ActualizarEstadoPartes(){
		vistaEstadoPartes.llenarListaPartes(controladorEstadoPartes.CargarModeloPartes());
	}
	
	public void ActualizarEtiquetasEstado(double combustible,int maxVida,int vida){
		Vehiculo unauto=this.ObtenerJugador().getVehiculo();
		String velMax=Float.toString(unauto.getVelMaxima());
		String performance=Integer.toString(unauto.getPerformance());
		vistaEstadoPartes.llenarEtiquetas(Double.toString(combustible), Integer.toString(maxVida),Integer.toString(vida),velMax,performance);
	}
		

	public void AbrirVentanaTaller (){
		vistaTaller.VistaTallerVisibilidadTrue();
	}
	
	public void AbrirVentanaMenuPrincipal (){
		vistaMenuPrincipal.VistaMenuPrincipalVisibilidadTrue();
	}
	
	public void AbrirVentanaCrearUsuario(){
		vistaCrearUsuario.VistaCrearUsuarioVisibilidadTrue();
	}
	
	public void AbrirVentanaSeleccionarJugador() {
		vistaSeleccionarJugador.VistaSeleccionarJugadorVisibilidadTrue();
		
	}
	
	public void AbrirVentanaPistaOponente(){
		vistaPistaOponente.VistaVisibilidadTrue();
		
	}
	
	public void AbrirVentanaComercio (){
		vistaComercio.VistaComercioVisibilidadTrue();
	}

	public void AbrirVentanaCambiarPartes (){
		vistaCambiarPartes.VistaCambiarPartesVisibilidadTrue();
	}
	
	public void AbrirVentanaEstadoPartes (){
		vistaEstadoPartes.VistaEstadoPartesVisibilidadTrue();
	}
	

	public void OcultarVentanaMenuPrincipal(){
		vistaMenuPrincipal.VistaMenuPrincipalVisibilidadFalse();
	
	}
	
	public void OcultarVentanaPistaOponente(){
		vistaPistaOponente.VistaVisibilidadFalse();

	}

	public void OcultarVentanaCrearUsuario(){
		vistaCrearUsuario.VistaCrearUsuarioVisibilidadFalse();
	}
	
	public void OcultarVentanaSeleccionarJugador() {
		vistaSeleccionarJugador.VistaSeleccionarJugadorVisibilidadFalse();
		
	}
	
	public void OcultarVentanaTaller(){
		vistaTaller.VistaTallerVisibilidadFalse();
	}
	
	public void OcultarVentanaComercio(){
		vistaComercio.VistaComercioVisibilidadFalse();
	}

	public void OcultarVentanaCambiarPartes (){
		vistaCambiarPartes.VistaCambiarPartesVisibilidadFalse();
	}
	
	public void OcultarVentanaEstadoPartes(){
		vistaEstadoPartes.VistaEstadoPartesVisibilidadFalse();
	}
	
	public String ContenidoTextBox(){
		return vistaCrearUsuario.ContenidoTextBox();
	}
	
	public PersonajeJugador ObtenerJugador (){
		return this.jugador;
	}
	
	public void setJugador(PersonajeJugador j){
		this.jugador = j;
	}
	
	public int ObtenerIndicePartes (){
		return vistaTaller.DevolverIndicePartes();
	}
	
	public int ObtenerIndiceAutos (){
		return vistaTaller.DevolverIndiceAutos();
	}
	
	public int ObtenerIndicePartesComprar(){
		return vistaComercio.DevolverIndicePartesComprar();
	}
	
	public int ObtenerIndiceJugadores (){
		return vistaSeleccionarJugador.DevolverIndiceJugador();
	}
	
	public int ObtenerIndicePistas (){
		return vistaPistaOponente.DevolverIndicePistas();
	}
	
	public int ObtenerIndiceOponentes (){
		return vistaPistaOponente.DevolverIndiceOponentes();
	}
	
	public int ObtenerIndicePartesNuevas(){
		return vistaCambiarPartes.DevolverIndicePartesNuevas();
	}
	
	public int ObtenerIndicePartesUsadas(){
		return vistaCambiarPartes.DevolverIndicePartesUsadas();
	}
	
	public int ObtenerIndiceEstadoPartes(){
		return vistaEstadoPartes.DevolverIndicePartes();
	}
		
	public Taller ObtenerTaller(){
		return controladorTaller.DevolverTaller();
	}
	
	public ListaJugadores ObtenerListaJugadores() {
		return controladorVistaSeleccionarJugador.ObtenerListaJugadores();
	}
	
	public void GuardarPartida() {
		controladorVistaSeleccionarJugador.guardar();		
	}
	
	public void IniciarCarrera (double apuesta,Pista pista,Auto oponente){
		Modelo modelo= new Modelo(this.ObtenerJugador(),apuesta,pista,oponente);
		Controlador controlador = new Controlador(modelo);
		controlador.nuevaCarrera();
		new VistaCarrera(modelo,controlador,this);
		this.OcultarVentanaPistaOponente();
		controlador.iniciarCarrera();
		
				
	}

	

}


